java >>>符号用法

来源:百度知道 编辑:UC知道 时间:2024/05/25 10:56:35

移位运算一般用来取某几个指定位上的值,或快速实现乘以或除以2^n的运算。

比如2<<1,就是把00000010变成了00000100,2变成了4,相当于乘了2;
60>>2,就是把00111100变成了00001111,60变成了15,相当于除以4。
8>>>1,8的二进制是00001000,符号位即最高位是0,所以用0填充,00001000变成00000001,得到1,相当于除以8。

以上都是对正数的操作,下面来看对负数的操作:
-12<<1,-12的补码是11110100,左移1位,变成11101000,正好是-24的补码,相当于乘以2。
-36>>2,-36的补码是11011100,右移2位,变成00110111,这是55的二进制码,与-36好像没什么关系。
-40>>>3,-40的补码是11011000,符号位即最高位为1,所以用1填充左侧的位,得到11111011,这是-5的补码,相当于除以8。

由上面的例子可见,>>>其实是为了方便实现负数整除2^n的运算